#ifndef _core_switch_detail_end_impl_hpp_
#define _core_switch_detail_end_impl_hpp_

/** \file end_impl.hpp
 *  \author Adrian Schweizer
 *  \created  $Mo 11 Feb 08:33:01 pm CET 2008 schwadri@SchwadriLaptop.local$
 *  \modified $Mo 11 Feb 08:38:14 pm CET 2008 schwadri@SchwadriLaptop.local$
 */

#include <boost/mpl/void.hpp>
#include "../case_iterator.hpp"

namespace core {

    struct case_tag;
}

namespace boost {
    namespace fusion {
        namespace extension {

            template <typename Tag>
                struct end_impl;

            template <>
                struct end_impl<core::case_tag>
                {
                    template <typename Case>
                        struct apply
                        {
                            typedef core::case_iterator<mpl::void_,0> type;
                            static type call(const Case& c)
                            {
                                return type(mpl::void_());
                            }
                        };
            };
        }
    }
}


#endif // _core_switch_detail_end_impl_hpp_
